home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 43 / Mac Magazin and MacEasy Magazine CD - Issue 43.iso / Software / Multimedia / Sound / PlayerPRO 4.6 Dev.Kit / MADH Library 4.6 / MADLibrary Source / PlugImportBE.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-11  |  4.9 KB  |  248 lines  |  [TEXT/EDIT]

  1. #include "RDriver.h"
  2. #include "RDriverInt.h"
  3. #include "FileUtils.h"
  4.  
  5. #define RSRCNAME "\pRsrc Plug Sys##"
  6.  
  7. static MADLibrary    *inMADDriver;
  8.  
  9. OSErr CheckMADFile( Ptr name)
  10. {
  11.     UNFILE            refNum;
  12.     char                charl[ 20];
  13.     OSErr                err;
  14.     
  15.     refNum = iFileOpen( name);
  16.     if( !refNum) return -1;
  17.     else
  18.     {
  19.         iRead( 10, charl, refNum);
  20.         
  21.         if( charl[ 0] == 'M' &&
  22.                 charl[ 1] == 'A' &&
  23.                 charl[ 2] == 'D' &&
  24.                 charl[ 3] == 'H') err = noErr;
  25.         else err = -1;
  26.         
  27.         iClose( refNum);
  28.     }
  29.     
  30.     return err;
  31. }
  32.  
  33. OSErr TESTmain( OSType order, Ptr AlienFileName, MADMusic *MadFile, PPInfoRec *info, MADDriverSettings *init);
  34.  
  35. OSErr CallImportPlug(     short                    PlugNo,                // CODE du plug
  36.                                                 OSType                order,
  37.                                                 Ptr                    AlienFile,
  38.                                                 MADMusic            *theNewMAD,
  39.                                                 PPInfoRec            *info)
  40. {
  41. OSErr                myErr;
  42. short                fileID;
  43.  
  44.     myErr = noErr;
  45.     
  46.     //myErr = (*inMADDriver->ThePlug[ PlugNo].IOPlug) (order, AlienFile, theNewMAD, info, &inMADDriver->DriverSettings);
  47.     
  48.     return( myErr);
  49. }
  50.  
  51. OSErr    PPTestFile( char    *kindFile, Ptr AlienFile)
  52. {
  53.     short            i;
  54.     MADMusic        aMAD;
  55.     PPInfoRec        InfoRec;
  56.     
  57.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  58.     {
  59.         if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
  60.         {
  61.             return( CallImportPlug( i, 'TEST', AlienFile, &aMAD, &InfoRec));
  62.         }
  63.     }
  64.     return MADCannotFindPlug;
  65. }
  66.  
  67. OSErr    PPInfoFile( char    *kindFile, FSSpec    *AlienFile, PPInfoRec    *InfoRec)
  68. {
  69.     short            i;
  70.     MADMusic        aMAD;
  71.     
  72.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  73.     {
  74.         if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
  75.         {
  76.             return( CallImportPlug( i, 'INFO', AlienFile, &aMAD, InfoRec));
  77.         }
  78.     }
  79.     return MADCannotFindPlug;
  80. }
  81.  
  82. OSErr    PPExportFile( char    *kindFile, FSSpec    *AlienFile, MADMusic    *theNewMAD)
  83. {
  84.     short        i;
  85.     PPInfoRec    InfoRec;
  86.     
  87.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  88.     {
  89.         if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
  90.         {
  91.             return( CallImportPlug( i, 'EXPL', AlienFile, theNewMAD, &InfoRec));
  92.         }
  93.     }
  94.     return MADCannotFindPlug;
  95. }
  96.  
  97. OSErr    PPImportFile( char    *kindFile, FSSpec    *AlienFile, MADMusic    *theNewMAD)
  98. {
  99.     short        i;
  100.     PPInfoRec    InfoRec;
  101.     
  102.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  103.     {
  104.         if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
  105.         {
  106.             return( CallImportPlug( i, 'IMPL', AlienFile, theNewMAD, &InfoRec));
  107.         }
  108.     }
  109.     return MADCannotFindPlug;
  110. }
  111.  
  112. OSErr    PPIdentifyFile( char    *type, Ptr AlienFile)
  113. {
  114.     FILE*                refNum;
  115.     short                i;
  116.     PPInfoRec        InfoRec;
  117.     OSErr                iErr;
  118.     
  119.     strcpy( type, "!!!!");
  120.     
  121.     // Check if we have access to this file
  122.     refNum = iFileOpen( AlienFile);
  123.     if( !refNum) return -1;
  124.     iClose( refNum);
  125.     
  126.     // Is it a MAD file?
  127.     iErr = CheckMADFile( AlienFile);
  128.     if( iErr == noErr)
  129.     {
  130.         strcpy( type, "MADH");
  131.         return noErr;
  132.     }
  133.     
  134.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  135.     {
  136.         if( CallImportPlug( i, 'TEST', AlienFile, 0L, &InfoRec) == noErr)
  137.         {
  138.             strcpy( type, inMADDriver->ThePlug[ i].type);
  139.             
  140.             return noErr;
  141.         }
  142.     }
  143.     
  144.     strcpy( type, "!!!!");
  145.     
  146.     return MADCannotFindPlug;
  147. }
  148.  
  149. Boolean    MADPlugAvailable( char    *kindFile)
  150. {
  151.     short        i;
  152.  
  153.     if( !strcmp( kindFile, "MADH")) return true;
  154.     
  155.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  156.     {
  157.         if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type)) return true;
  158.     }
  159.     return false;
  160. }
  161.  
  162. typedef OSErr (*PLUGFILLDLLFUNC) ( PlugInfo*);
  163.  
  164. Boolean LoadPlugLib( Ptr name, PlugInfo* plug)
  165. {
  166.     PLUGFILLDLLFUNC        fpFuncAddress;
  167.     OSErr                            err;
  168.     
  169.     strcpy( plug->file, name);
  170.     
  171. /*    plug->hLibrary = LoadLibrary( name);
  172.     if( !plug->hLibrary) return false;
  173.     
  174.     plug->IOPlug = (PLUGDLLFUNC) GetProcAddress( plug->hLibrary, "main");
  175.     if( !plug->IOPlug) return false;
  176.     
  177.     fpFuncAddress = (PLUGFILLDLLFUNC) GetProcAddress( plug->hLibrary, "FillPlug");
  178.     if( !fpFuncAddress) return false;
  179.     
  180.     err = (*fpFuncAddress)( plug);
  181.     */
  182.     return true;
  183. }
  184.  
  185. void MInitImportPlug( char *PlugsFolderName)
  186. {
  187.     inMADDriver = MADGetMADLibraryPtr();
  188.     
  189.     ///////////
  190.     inMADDriver->TotalPlug = 0;
  191.     ///////////
  192.     
  193. /*    {
  194.     HANDLE                hFind;
  195.     WIN32_FIND_DATA        fd;
  196.     BOOL                bRet = TRUE;
  197.     char                FindFolder[ 200], inPlugsFolderName[ 200];
  198.     
  199.     if( PlugsFolderName)
  200.     {
  201.         strcpy( inPlugsFolderName, PlugsFolderName);
  202.         strcat( inPlugsFolderName, "/");
  203.         
  204.         strcpy( FindFolder, inPlugsFolderName);
  205.     }
  206.     else
  207.     {
  208.         strcpy( inPlugsFolderName, "/");
  209.         strcpy( FindFolder, inPlugsFolderName);
  210.     }
  211.     strcat( FindFolder, "*.PLG");
  212.     
  213.     hFind = FindFirstFile( FindFolder, &fd);
  214.     
  215.     inMADDriver->ThePlug = (PlugInfo*) MADNewPtr( MAXPLUG * sizeof( PlugInfo), &inMADDriver->DriverSettings);
  216.     
  217.     while( hFind != INVALID_HANDLE_VALUE && bRet)
  218.     {
  219.         if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
  220.         {
  221.             if( inMADDriver->TotalPlug < MAXPLUG)
  222.             {
  223.                 char myCompleteFilename[ 200];
  224.                 
  225.                 strcpy( myCompleteFilename, inPlugsFolderName);
  226.                 strcat( myCompleteFilename, fd.cFileName);
  227.                 
  228.                 if( LoadPlugLib( myCompleteFilename, &inMADDriver->ThePlug[ inMADDriver->TotalPlug])) inMADDriver->TotalPlug++;
  229.             }
  230.         }
  231.         
  232.         bRet = FindNextFile( hFind, &fd);
  233.     }
  234.     
  235.     FindClose( hFind);
  236.     }*/
  237.     ///////////
  238. }
  239.  
  240. void CloseImportPlug()
  241. {
  242.     short i;
  243.     
  244.     for( i = 0; i < inMADDriver->TotalPlug; i++)
  245.     {
  246.     //        FreeLibrary( inMADDriver->ThePlug[ i].hLibrary);
  247.     }
  248. }